home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -screenplay- / otherstuff / jst_dev / installwizard / source / loadseg.asm < prev    next >
Assembly Source File  |  1999-04-20  |  885b  |  52 lines

  1.     cnop    0,4
  2.  
  3. ; loads an executable by calling OSEmu LoadSeg()
  4. ;
  5. ; < A0: name of the executable
  6. ; > A1: start address (do a JSR (a1) to start the program)
  7. ; ** no checks are done there so be careful **
  8.  
  9. LoadExecutable:
  10.     movem.l    A2-A6/D0-D7,-(A7)
  11.     move.l    A0,-(A7)
  12.     MOVE.L    $4.W,A6            ;OPEN DOSLIB FOR USE (THE EMU
  13.     MOVEQ.L    #0,D0            ;PROVIDES THE FUNCTIONS)
  14.     LEA    dosname(PC),A1
  15.     JSRLIB    OpenLibrary
  16.     RELOC_MOVEL    D0,dosbase
  17.     MOVE.L    D0,A6
  18.     move.l    (A7)+,A0
  19.  
  20.     MOVE.L    A0,D1
  21.     JSRLIB    LoadSeg
  22.     RELOC_MOVEL    D0,loaderseg
  23.  
  24.     LSL.L    #2,D0
  25.     MOVE.L    D0,A1
  26.     ADDQ.L    #4,A1
  27.  
  28.     SUB.L    A0,A0
  29.     MOVEQ.L    #0,D0        ; no pointer on argumentline
  30.  
  31.     JSRGEN    FlushCachesHard
  32.     movem.l    (A7)+,A2-A6/D0-D7
  33.     rts
  34.  
  35. ; unloads previously loaded executable
  36.  
  37. UnloadExecutable:
  38.     STORE_REGS
  39.     move.l    dosbase(pc),A6
  40.     move.l    loaderseg(pc),D1
  41.     JSRLIB    UnLoadSeg
  42.     RESTORE_REGS
  43.     rts
  44.  
  45. loaderseg:
  46.     dc.l    0
  47. dosbase:
  48.     dc.l    0
  49. dosname:
  50.     dc.b    "dos.library",0
  51.  
  52.